package com.liuhouse.domain;

import com.liuhouse.pojo.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;
import java.util.List;

//UserDetails是SpringSecurity官方提供的接口
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginUser implements UserDetails {

    private User user;

    //权限信息的集合  不管怎么样 对于已经掌握的东西  直接拿来使用即可  对于不会的   就学会 然后使用 先达到目的再说
    //要渔  不要  鱼
    private List<String> permissions;

    @Override
    //用户返回权限信息,现在我们正在实现认证 , 权限 后面才用得到 。所以返回null即可
    //当要查询用户信息的时候,我们就不能单纯的返回null,要重写这个方法,作用是返回权限信息
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    //用户获取用密码,由于使用的实体类是User，所以获取的是数据库的用户密码
    public String getPassword() {
        return user.getPassword();
    }

    @Override
    //用于获取用户名。由于使用的实体类是User，所以获取的是数据库的用户名
    public String getUsername() {
        return user.getUserName();
    }

    @Override
    //判断登录状态是否过期,把这个改成true，表示永不过期
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    //判断账号是否被锁定，把这个改成true，表示未锁定
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    //判断登录凭据是否过去,把这个改成true，表示永不过期
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    //判断用户是否可用,把这个改成true，表示可用状态
    public boolean isEnabled() {
        return true;
    }
}
